Vega-Lite文档: 05_Scales

Scales

刻度属性

属性类型描述
nameStringRequired, scale的唯一名字, scale和projections共用同一个名字
typeStringscale的类型, 默认是linear, 详见scale类型
domainDomainDomain信息, 详见Scale Domain参考
domainMax/Min/MidNumberdomain最大值, 最小值, 中间值
domainRawArraydomain原始值数组, 在平移和缩放等交互操作中有用
interpolateString/Object范围数据的插值表示, 如rgb, hsl, hsl-long, lab, hcl, hcl-long, cubehelix, cubehelix-long, 详见d3中的插值
rangeRange可视化的范围, 详见Scale Range 参考
reverseBoolean反转刻度范围, 默认false
roundBoolean将数字输出进行round, 默认false

Scale Type

  • Quantitative

    • linear

    • log

    • pow

    • sqrt

    • symlog

    • time

    • utc

    • sequential

  • Discrete

    • ordinal

    • band

    • point

  • Discretizing

    • quantile

    • quantize

    • threshold

    • bin-ordinal

Quantitative Scales

Note 定量Scales将连续的输入映射到连续的刻度, 所有定量刻度都支持颜色值范围,定义为颜色字符串数组或scheme。如果属性域包含两个颜色值,则使用连续色阶。如果属性域包含三个颜色值,则使用发散色阶。对于较大的域大小,域和范围应具有相同数量的值,将应用分段插值, 支持以下属性:

属性类型描述
binsBins分bin操作
clampBoolean输出值是否应固定到范围, 默认false
paddingNumber扩展scale domain
niceBoolean/Number默认false, 自动对scale进行round, 如[0.201234, 0.996679]可能会美化成[0.2, 1.0]
zeroBooleanScale是否应该包含0, 对linear, sqrt, pow默认是true, 其他默认是false

  • linear: 线性尺度

  • log: 对数尺度, 包含一个base:Number属性, 设置对数的底, 默认是10

  • pow: 幂率尺度, exponent::Number属性设置指数, 默认是1

  • sqrt: 等价于exponent为0.5的pow;

  • symlog: symmetric log, 对称对数尺度。支持非正数的log, constant::Number属性设置函数在0附近的斜率, 默认是1

  • time和utc: time使用本地时间, utc使用世界时, 包含一个nice属性修改单位刻度, 可以指定单位, 可选项为millisecond, second, minute, hour, day, week, month, year, 例如: {"interval": "month", "step": 3}

Discrete Scale

针对离散变量的分组。

  • ordinal:

json

{
  "scales": [
    {
      "name": "color",
      "type": "ordinal",
      "domain": {"data": "table", "field": "category"},
      "range": {"scheme": "category20"}
    }
  ]
}

json
  • band: 将连续范围划分为均匀的数据块, 可以用step为每个band指定大小

band支持的操作:

属性类型描述
alignNumber[0,1]范围, 默认0.5
domanImplicitBoolean是否向domain中添加新值隐式扩展, 默认false
paddingNumber[0,1]范围, 同时设置paddingInnerpaddingOuter
paddingInner/paddingOuterNumber刻度范围内/外的step

  • point: band的变体, width为0, 常用于分类散点图, 不接受paddingInner属性

Discretizing Scale

离散化Scale把连续变量变成离散分组。

  • quantile: 按照分位数分组

以下示例从连续配色方案中按照分位数取5组进行颜色编码
json

{
  "name": "color",
  "scale": "quantile",
  "domain": {"data": "table", "field": "value"},
  "range": {"scheme": "plasma", "count": 5}
}

json
  • quantize: 量化分组

以下示例把连续颜色值分成7组
json

{
  "name": "color",
  "scale": "quantize",
  "domain": {"data": "table", "field": "value"},
  "range": {"scheme": "blues", "count": 7}
}

json
  • threshold: 按照阈值切分输入, 然后提供range进行分派, 如果domain有N个阈值, 则数据被分隔成N+1份, 相应地, range必须有N+1个元素

{
  "name": "threshold",
  "type": "threshold",
  "domain": [0, 1],
  "range": ["red", "white", "blue"]
}
# -1   => "red"
# 0    => "white"
# 0.5  => "white"
# 1.0  => "blue"
# 1000 => "blue"

  • bin-ordinal: 用vega的bin转换方法进行分箱划分domain, 合法的输入为: 分bin数组, 如[0, 5, 10, 15, 20]; bin对象; 以及可以解析为上述二者的signal引用。

json

{
  "data": [
    {
      "name": "input",
      "transform": [
        { 
            "type": "extent", 
            "field": "value",
            "signal": "extent"
        },
        {
            "type": "bin",
            "extent": {"signal": "extent"},
            "signal": "bins" 
        }
      ]
    }
  ],
  "scales": [
    {
      "name": "color",
      "type": "bin-ordinal",
      "bins": {"signal": "bins"},
      "range": {"scheme": "greens"}
    }
  ]
}

json

Scale Domain

有多种方式指定domain:

  • array: [0, 500]; ['a', 'b', 'c']

  • signal reference: {"signal": "myDomain"}

  • data reference: {"data": "myData", "field": "myCol"}

Scale Range